<?php
class My_Ftp
{	
	/**
     * String przechowujący aktualną ścieżkę na serwerze
     * 
     * @access protected
     */
	protected $_sSciezka;
	
	/**
     * Zasób przechowujący uchwyt połączenia FTP
     * 
     * @access protected
     */
	protected $_oPolaczenie;
    
	/**
     * Konstruktor, odpowiadający za połączenie się z serwerem FTP
     *
     * @access public
     * @param String $sAdres
     * @param String $sLogin
     * @param String $sHaslo
     * @param String $sSciezka
     * @param Int 	 $iPort
     * @param String $sTyp
     */
	public function __construct( $sAdres, $sLogin = '', $sHaslo = '', $sSciezka = '.', $iPort = 21, $sTyp = 'active' )
	{
		$this->_sSciezka = $sSciezka;
		$this->_oPolaczenie = ftp_connect( $sAdres );
		ftp_login ( $this->_oPolaczenie, $sLogin, $sHaslo );
		if ( $sTyp == 'passive' ) ftp_pasv( $this->_oPolaczenie, true );
		if ( $sSciezka != '.' ) $this->zmienKatalog( $sSciezka );
	}
	
	public function dodajKatalog( $sFile ) {		
		ftp_mkdir($this->_oPolaczenie, $sFile);
	}
	
	public function dodajPlik($sRemoteFilePath, $sLocalFilePath, $sFileName)
	{	
		$aPlikiKatalogu = ftp_nlist($this->_oPolaczenie, $sRemoteFilePath);
		
		if(!in_array( $sRemoteFileName, $aPlikiKatalogu)) {
			ftp_put( $this->_oPolaczenie, $sRemoteFilePath.'/'.$sFileName, $sLocalFilePath.'\\'.$sFileName, FTP_ASCII );
			return true;
		}
		
		return false;
	}
	
	public function pobierz($sLocalFilePath, $sRemoteFilePath) {
		ftp_get( $this->_oPolaczenie, $sLocalFilePath, $sRemoteFilePath, FTP_BINARY );	
	}
	
	public function zmienNazwe($sOldFile, $sNewFile) {
		if(ftp_rename($this->_oPolaczenie, $sOldFile, $sNewFile))
			return true;
		
		return false;
	}
	
	/**
     * Metoda zmieniająca aktualną ścieżkę na ścieżkę wskazaną w parametrach
     *
     * @access public
     * @param String $sSciezka
     * @return Boolean
     */
	public function zmienKatalog( $sSciezka ) {		
		if(ftp_chdir($this->_oPolaczenie, $sSciezka)) {
			$this->_sSciezka = $sSciezka;
			return true;
		}
		
		return false;
	}
	
	
	/**
     * Metoda rozłączająca się z serwerem FTP
     *
     * @access public
     */
	public function rozlacz() {
		ftp_close( $this->_oPolaczenie );
	}
		
	/**
     * Destruktor odpowiadający za rozłączenie się z serwerem FTP
     *
     * @access public
     */
	public function __destruct() {
		$this->rozlacz();
	}    
}